ELK 构建 MySQL 慢日志收集平台详解
0. 引言
线上 MySQL 慢查询是性能排查的高频切入点,但靠登录服务器手工查看慢日志效率极低。本文讲解如何通过开源日志检索系统 ELK 构建 MySQL 慢日志收集及分析平台,覆盖组件选型、架构演进与完整搭建演示。
1. ELK 与 EFK 组件辨析
ELK、EFK 有共同的组件:
- Elasticsearch(ES):实时的全文搜索和分析引擎,提供日志数据的收集、分析、存储三大功能;
- Kibana:Web 图形化界面,可视化展示 Elasticsearch 中的日志数据与检索结果。
而 L 与 F 代表不同的采集工具:
| 工具 | 定位 | 特点 |
|---|---|---|
| Logstash | 搜集、分析、过滤日志 | 功能强大,资源消耗高 |
| Beats(Filebeat) | 轻量级日志采集器 | 内存 CPU 消耗低,性能好 |
| Fluentd | 日志收集、处理、转发 | 轻量级,生态丰富 |
Beats 家族除 Filebeat 外,还有 Packetbeat(网络数据)、Metricbeat(指标)、Winlogbeat(Windows 日志)等成员,各针对一类数据。Kafka 则是高并发日志场景下附加的关键组件(缩写 K),提供分布式消息队列缓冲能力。
2. ELK 的优势
- 开源完整:收集、存储、分析、检索全链路组件齐全,组合即可用,无需额外开发;
- 可视化浏览:在 Kibana 控制台选择时间范围即可查看报表,快捷方便;
- 广泛平台支持:可适配 K8s、云原生微服务等架构。
3. 常见架构演进
方案一:Logstash 直采(中小型)
每个客户端部署 Logstash 负责日志收集与过滤,服务端由 Elasticsearch + Kibana 组成,实现最简单的日志收集链路。
方案二:Beats 替代 Logstash
客户端用 Filebeat 代替 Logstash 做日志收集,资源消耗更低、性能更好;需要采集其他类型数据时,选用 Beats 家族对应成员。
方案三:引入 Kafka 缓冲(大中型)

Filebeat 采集日志后先存入 Kafka 暂存缓冲,再由 Logstash 消费、提取、过滤后写入 ES。ES、Kafka、Logstash 均以集群模式部署,适合存储上百 T 甚至 P 级运维、系统、业务日志的场景。
4. 搭建演示:收集 MySQL 慢日志
4.1 服务端安装 ES 与 Kibana
- 导入官方认证 key,在
/etc/yum.repos.d下新建elk.repo配置官方源; yum install elasticsearch -y安装后,修改/etc/elasticsearch/elasticsearch.yml中的network.host为本地网卡接口地址,systemctl start elasticsearch启动;- 通过
systemctl status elasticsearch或curl http://<IP>:9200校验:返回包含版本信息的 JSON 即表示 ES 运行正常; - 浏览器访问
http://<IP>:5601进入 Kibana 管理界面。
4.2 客户端安装 MySQL 与 Filebeat
yum install filebeat -y安装采集器;- 修改 filebeat.yml 指定输出方式为 Elasticsearch,填写 ES 主机地址(集群模式需写多个主机端口);
filebeat modules enable mysql激活 MySQL 日志插件,用filebeat modules list确认;- 修改
/etc/filebeat/modules.d/mysql.yml中的slowlog路径,与 MySQL 慢日志路径保持一致; - 在 MySQL 中开启慢查询:
set global slow_query_log='ON',set global long_query_time=1(大于 1 秒记录),并设置慢日志文件路径; - 执行
select sleep(5)模拟慢查询,观察 filebeat 推送窗口出现日志即表示成功推送到 ES。
4.3 Kibana 检索验证
打开 Kibana 后台的 Discover,选择时间周期,添加 filter 过滤器输入 slow.query 关键字,即可查看对应时间周期内的 MySQL 慢日志记录与图表。相比临时命令和脚本分析,检索系统让慢日志分析变得快速、高效、可回溯。
5. 小结
ELK 选型要点:中小规模用 Logstash 或 Filebeat 直采 ES;海量日志必须引入 Kafka 做缓冲削峰。落地上注意三点:Filebeat 的 slowlog 路径要与 MySQL 慢日志路径对齐、ES 的 network.host 要暴露给采集端、Kibana 用过滤器沉淀常用检索条件。检索效率提升后,慢日志分析才能从"应急排查"走向"常态化治理"。
下一章介绍 Zabbix 自动发现与自动注册,看海量主机如何被自动纳入监控体系。